JMU JMU - Department of Computer Science
Help Tools
Project Policies


Each student must complete an individual (i.e., not group) final project. In general, final projects must use OpenGL.

1 Topics

The following projects have been pre-approved: If you would like to work on a project that is not listed below, you must get it approved.

1.1 Science, Technology, Engineering and Math

Molecular Modeler An application that displays 3D models of simple chemical compounds. The user must be able to rotate the model in all three dimensions. Bonds can be shown either as a "wireframe" or as 3D cylinders.
Virtual Worm A 3D model of a worm that the user can "dissect".
Packet-Switched Network Simulation A 3D visualization of the routing of packets in a packet-switched network. The model must be able to: read a network from a file, use a resonable routing algorithm, and simulated dropped packets. The visualization must show (in less-than-real-time) the movement of packets. The packets must be color coded based on their destination.
Articulated Robot Arm Simulator A simulation of an articulated robot arm that has four degrees of freedom.
Visualization of Optimization Algorithms A visualization of one (or more) numerical algorithms for solving optimization problems with two decision variables. The visualization must include a 3D representation of the function to optimize and the iterations of the algorithm.
Bouncing Ball Simulation A realistic 3D simulation of a bouncing ball in which the ball deforms when it strikes the floor and returns to its original shape after it rises up off of the floor.

1.2 James Madison University

Campus Terrain Model An application that displays a 3D model of the terrain of the campus (the data must be accurate; they are available from several sources) and allows users to click on two points and find the distance between them, including the total change in elevation.
Animated Duke Dog A 3D model of the Duke Dog that walks around the screen, following the mouse.
CS Department Walk Thru An accurate 3D model of the second floor of the CS/ISAT building with all offices, classrooms, etc... that the user can "walk though" (using a first-person perspective).

1.3 Games

3D Space Cubes A variant of the classic Asteroids games in which the asteroids are 3D cubes (that break-up into smaller cubes) and the ship is a 3D cone or pyramid. All objects must move in all three dimensions. Objects that leave the screen must not return from the opposite face.
3D Brick Basher A variant of the classic Breakout game in which the bricks, ball, and paddle are all 3D objects. The paddle must be able to move in both the \([1, 0, 0]\) and \([0, 0, 1]\) directions and the ball must move in all three dimensions.
3D Paddle Ball A first-person paddle ball game in which the ball travels principally in the \([0, 0, 1]\) direction. The application must support both one-player (against the computer) and two-player modes. Each player must have his/her own window. The player must be able to move in both the \([1, 0, 0]\) and \([0, 0, 1]\) directions.
3D First Person Snakes and Ladders Game A 3D variant of the classic games Snakes and Ladders. In this version, each player has a first person view of the board from the perspective of her/his token.

1.4 The Visual and Performing Arts

3D Music Notation An application that can display a simple musical score in 3D. Notes, the staff, etc... must all be 3D objects. The user must be able to rotate the score and manipulate the individual notes (e.g., move them up and down the staff, add flats/sharps, change their length).
Theater Lighting Simulation An application that allows the user to experiment with different lighting setups.

1.5 The Social Sciences

U.S. Census Data Viewer An application that allows users to draw 3D maps of the United States in which the "height" of each state is determined by socio-economic data (e.g., population density, median income, housing starts).
Trade Data Viewer An application that allows users to draw network representations of international/interregional trade data. The size of the link must be used to represent the volume of trade and the size of the node must be used to represent the size of the region's/country's economy. The application must be animated to show the changes in these values over time.

1.6 The Humanities

3D Lexis Pencil Tool An application that allows users to create and display event histories using 3D Lexis Pencils
3D Book Simulation An application that displays the text from any book on an animated "simulated book". The user must be able to open the book and turn pages. It must also be possible to "program" the book to flip through its pages at a pre-determined rate.

2 Proposal Approval

If you do not want to work on one of the pre-approved projects above, you must get your project approved in advance. You must submit a brief (i.e., approximately one page), typed proposal that includes the requirements for the application.

3 Collaboration

You must write the code entirely on your own.

You may request help on general topics from other students and friends. You may also discuss the assignment itself with other students in the course. However, when writing the actual code, you must do all of the work yourself.

4 Materials

All code, pictures and sounds must be original (i.e., do not plagiarize and do not infringe on any copyrights). You may use code developed/used for lectures or assignments.

5 Recommended Approach

You should probably use a SCRUM-like process even though you are working alone. That is, you should probably always have a working version of the product (regardless of how simple) and add features over time. Do not spend an inordinate amount of time designing the product and/or attempt to implement all of the features at once.

6 Presentations

All students must give a "formal", 5 minute presentation of the final product on the "due date". This presentation should include a discussion of the design and implementation of the product as well as a demonstration of the product.

7 Submissions

You must submit ALL materials associated with your project on the "due date".

These materials must be submitted via Canvas in a .zip file. The root directory of the .zip file must contain a file named readme.txt that explains both how to:

  1. Build the application.
  2. Run the application.

All code and documentation written for the final project must conform to the course style guides. Submissions that do not conform to the course style guide and/or the above guidelines will not be accepted.

8 Grading

Projects will be evaluated primarily based on their technical merit (i.e., aesthetic issues will only have a minor impact on grades). That is, the purpose of the project is to give you the opportunity to demonstrate that you understand and can use OpenGL.

Copyright 2020